package com.itany.corejava.code08_集合.map集合;
import java.util.Map.Entry;
/**
 * @author MissChen
 * @date 2024年03月05日 15:26
 */

import java.util.*;

/**
 * 新建Student类(id、name)
 * 创建多个Student对象
 * 添加到HashMap中取，id的值作为key，整个对象作为值
 */
public class Test03_遍历 {
    public static void main(String[] args) {
        Map<Integer, Student> map = new HashMap();
        Student student = new Student(1, "admin");
        Student student2 = new Student(2, "alice");
        Student student3 = new Student(3, "jack");
        map.put(student.getId(), student);
        map.put(student2.getId(), student2);
        map.put(student3.getId(), student3);

        // test01(map);
        // test02(map);
        test03(map);


    }

    /**
     * 通过keySet()获取所有的key的集合，然后可以遍历所有的key
     * @param map
     */
    public static void test01(Map<Integer, Student> map) {
        //取出Map集合中所有的key，返回一个Set集合
        Set<Integer> keys = map.keySet();
        for (Integer key : keys) {
            //遍历所有的key
            // 可以根据key获取对应的value值
            Student stu = map.get(key);
            System.out.println("key:" + key + ",value:" + stu);
        }
    }

    /**
     * 通过values方法获取所有的value的集合，然后遍历所有的value
     * @param map
     */
    public static void test02(Map<Integer, Student> map) {
        Collection<Student> values = map.values();
        for (Student student : values) {
            System.out.println(student);
        }
    }

    /**
     * 通过entrySet()获取所有的key-value的集合，然后遍历所有的key-value 键值对
     * @param map
     */
    public static void test03(Map<Integer, Student> map) {
        Set<Map.Entry<Integer, Student>> entries = map.entrySet();
        // Iterator<Map.Entry<Integer, Student>> it=entries.iterator();
        // System.out.println(it.next());

        Iterator<Entry<Integer,Student>> it=entries.iterator();
        while(it.hasNext()){
            Entry<Integer,Student> entry=it.next();
            Integer key=entry.getKey();
            Student value=entry.getValue();
            System.out.println("key的值:"+key+",value的值:"+value);
        }


    }
}
